Calendar All Tests
Current file: /home/estudydev/workspace/eStudy_svn/web/common/classes/class.container.inc.php
Legend: executed not executed dead code

  Coverage
  Classes Methods Lines
Total
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 6
0.00 %0.00%
0.00% 0 / 40
 
Container
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 6
0.00 %0.00%
0.00% 0 / 40
 public function Container($classType, $criteriaFunction = NULL)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 7
 public function add($object)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 15
 public function count()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 1
 public function get($n)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 7
 public function callUserMethod($methodName, $parameter)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 9
 public function getErrorString()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 1


       1                 : <?php                                                                                                                                         
       2                 : /*--------------------------------------------------------------------------+                                                                 
       3                 : This file is part of eStudy.                                                                                                                  
       4                 : common/class.container.inc.php                                                                                                                
       5                 : - Modulgruppe:  Framework                                                                                                                     
       6                 : - Beschreibung: Eine Klasse um eine dynamische Liste darzustellen.                                                                            
       7                 : - Version:      0.2 30/10/05                                                                                                                  
       8                 : - Autor(en):    Christian Gerhardt <case42@gmx.net>                                                                                           
       9                 : +---------------------------------------------------------------------------+                                                                 
      10                 : This program is free software; you can redistribute it and/or                                                                                 
      11                 : modify it under the terms of the GNU General Public License                                                                                   
      12                 : as published by the Free Software Foundation; either version 2                                                                                
      13                 : of the License, or any later version.                                                                                                         
      14                 : +---------------------------------------------------------------------------+                                                                 
      15                 : This program is distributed in the hope that it will be useful,                                                                               
      16                 : but WITHOUT ANY WARRANTY; without even the implied warranty of                                                                                
      17                 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                                                                 
      18                 : GNU General Public License for more details.                                                                                                  
      19                 : You should have received a copy of the GNU General Public License                                                                             
      20                 : along with this program; if not, write to the Free Software                                                                                   
      21                 : Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.                                                                   
      22                 : +--------------------------------------------------------------------------*/                                                                 
      23                 : /**                                                                                                                                           
      24                 :  * In dieser Datei wird die Klasse Container implementiert.                                                                                   
      25                 :  * @version 0.2 30/10/05                                                                                                                      
      26                 :  * @author Christian Gerhardt <case42@gmx.net>                                                                                                
      27                 :  * @package eStudy.Framework                                                                                                                  
      28                 :  * @subpackage automation                                                                                                                     
      29                 :  */                                                                                                                                           
      30                 : /**                                                                                                                                           
      31                 :  * Klasse die eine Objektliste implementiert.                                                                                                 
      32                 :  * Es werden nur Objekte eines bestimmten bei der Erzeugung angegeben Typs akkumuliert.                                                       
      33                 :  * Es besteht die Möglichkeit mit Hilfe von  {@link callUserMethod() <b>callUserMethod()</b>} Methoden bei allen Objekten                    
      34                 :  * in der Liste aufzurufen.<br>                                                                                                               
      35                 :  * Mögliche Fehlermeldungen werden in einem  {@link $errorString <b>ErrorString</b>} gespeichert und können mit Hilfe                       
      36                 :  * der Methode  {@link getErrorString() <b>getErrorString</b>} ausgelesen werden.                                                             
      37                 :  * @package    eStudy.Framework                                                                                                               
      38                 :  * @subpackage    automation                                                                                                                  
      39                 :  * @author    Christian Gerhardt <case42@gmx.net>                                                                                             
      40                 :  * @version    0.1    15/11/03                                                                                                                
      41                 :  */                                                                                                                                           
      42                 : class Container {                                                                                                                             
      43                 :     /**                                                                                                                                       
      44                 :      * Eine Liste an Objecten im Container                                                                                                    
      45                 :      * @access private                                                                                                                        
      46                 :      * @var array                                                                                                                             
      47                 :      */                                                                                                                                       
      48                 :     var $objects;                                                                                                                             
      49                 :     /**                                                                                                                                       
      50                 :      * Der Typ der Objekte die aufgelistet werden sollen.                                                                                     
      51                 :      * @access private                                                                                                                        
      52                 :      * @var string                                                                                                                            
      53                 :      */                                                                                                                                       
      54                 :     var $classType;                                                                                                                           
      55                 :     /**                                                                                                                                       
      56                 :      * Nähere Fehlerbeschreibung zum letzten aufgetreten Fehler.                                                                             
      57                 :      * @access protected                                                                                                                      
      58                 :      * @var string                                                                                                                            
      59                 :      */                                                                                                                                       
      60                 :     var $errorString = '';                                                                                                                    
      61                 :     /**                                                                                                                                       
      62                 :      * Der Name einer boolschen Funktion, die zurück gibt, ob das Objekt aufgenommen weden soll oder nicht.                                  
      63                 :      * @access protected                                                                                                                      
      64                 :      * @var string                                                                                                                            
      65                 :      */                                                                                                                                       
      66                 :     var $criteriaFunction;                                                                                                                    
      67                 :     /**                                                                                                                                       
      68                 :      * Konstruktor                                                                                                                            
      69                 :      * @access public                                                                                                                         
      70                 :      * @param string $classType           - Der Name der Klasse von der Objekte akzeptiert werden soll                                        
      71                 :      * @param string $criteriaFunction - Der Name einer boolschen Funktion, die zurück gibt, ob das Objekt aufgenommen weden soll oder nicht.
      72                 :      */                                                                                                                                       
      73                 :     function Container($classType, $criteriaFunction = null) {                                                                                
      74               0 :         $this->objects = array();                                                                                                             
      75               0 :         $this->criteriaFunction = $criteriaFunction;                                                                                          
      76               0 :         if (is_string($classType)) {                                                                                                          
      77               0 :             $this->classType = $classType;                                                                                                    
      78               0 :         } else {                                                                                                                              
      79               0 :             $this->classType = false;                                                                                                         
      80                 :         }                                                                                                                                     
      81               0 :     }                                                                                                                                         
      82                 :     /**                                                                                                                                       
      83                 :      * Fügt der Containerliste ein Objekt hinzu.                                                                                             
      84                 :      * Das Objekt muß vom Typ der Klasse sein, die in classType eingestellt ist.                                                             
      85                 :      * Falls eine Kriteriumsfunktion angegeben wurde, wird diese                                                                              
      86                 :      * zunächst aufgerufen, bevor das Objekt in den den Container aufgenommen                                                                
      87                 :      * wird.                                                                                                                                  
      88                 :      * @access public                                                                                                                         
      89                 :      * @param object $object     - das hinzuzufügende Objekt                                                                                 
      90                 :      * @return bool                                                                                                                           
      91                 :      */                                                                                                                                       
      92                 :     function add($object) {                                                                                                                   
      93               0 :         if (is_object($object)) {                                                                                                             
      94               0 :             if ($this->classType && is_a($object, $this->classType)) {                                                                        
      95               0 :                 if ($this->criteriaFunction) {                                                                                                
      96               0 :                     if (method_exists($object, $this->criteriaFunction)) {                                                                    
      97               0 :                         if (call_user_func_array(array(&$object, $this->criteriaFunction), array())) {                                        
      98               0 :                             $this->objects[] = $object;                                                                                       
      99               0 :                         }                                                                                                                     
     100               0 :                     }                                                                                                                         
     101               0 :                 } else {                                                                                                                      
     102               0 :                     $this->objects[] = $object;                                                                                               
     103                 :                 }                                                                                                                             
     104               0 :                 return true;                                                                                                                  
     105                 :             } else {                                                                                                                          
     106               0 :                 $this->errorString = "Objekt nicht vom Typ: ".$this->classType;                                                               
     107                 :             }                                                                                                                                 
     108               0 :         } else {                                                                                                                              
     109               0 :             $this->errorString = "Es ist kein Objekt übergeben worden!";                                                                     
     110                 :         }                                                                                                                                     
     111               0 :         return false;                                                                                                                         
     112                 :     }                                                                                                                                         
     113                 :     /**                                                                                                                                       
     114                 :      * Gibt die Anzahl der Objekte in der Liste zurück.                                                                                      
     115                 :      * @access public                                                                                                                         
     116                 :      * @return integer    - die Anzahl der Objekte in der Liste                                                                               
     117                 :      */                                                                                                                                       
     118                 :     function count() {                                                                                                                        
     119               0 :         return count($this->objects);                                                                                                         
     120                 :     }                                                                                                                                         
     121                 :     /**                                                                                                                                       
     122                 :      * Gibt das n-te Objekt aus der Liste zurück.                                                                                            
     123                 :      * Die Zählreihenfolge fängt bei 0 an und hört bei Anzahl-1 auf.                                                                       
     124                 :      * @access public                                                                                                                         
     125                 :      * @param integer $n    - der Index des Objektes das zurückgegeben werden soll                                                           
     126                 :      * @return object        - das gewählte Objekt                                                                                           
     127                 :      */                                                                                                                                       
     128                 :     function get($n) {                                                                                                                        
     129               0 :         if (is_integer($n)) {                                                                                                                 
     130               0 :             if ($n < count($this->objects)) {                                                                                                 
     131               0 :                 return $this->objects[$n];                                                                                                    
     132                 :             } else {                                                                                                                          
     133               0 :                 $this->errorString = "Index $n out of bound!";                                                                                
     134                 :             }                                                                                                                                 
     135               0 :         } else {                                                                                                                              
     136               0 :             $this->errorString = "Keine Objekte in der Liste.";                                                                               
     137                 :         }                                                                                                                                     
     138               0 :         return null;                                                                                                                          
     139                 :     }                                                                                                                                         
     140                 :     /**                                                                                                                                       
     141                 :      * Führt eine Methode auf allen Objekten in der Liste aus.                                                                               
     142                 :      * Die Methode wird auf alle Objekte innerhalb der Liste angewandt die diese                                                              
     143                 :      * Methode besitzen, ansonsten wird das Objekt übersprungen. Der Rückgabewert                                                           
     144                 :      * sagt nichts darüber aus, ob die Methode erfolgreich angewandt wurde oder nicht.                                                       
     145                 :      * Er bedeutet einzig das mit dem korrekten Ausführen der Methode begonnen                                                               
     146                 :      * wurde oder nicht.<br>                                                                                                                  
     147                 :      * Ein <i>false</i> als Rückgabewert ist ein hinweis darauf, das die Objektliste                                                         
     148                 :      * leer ist, oder einer der Parameter vom falschen typ ist.<br>                                                                           
     149                 :      * Auch für Methoden die keine Parameter brauchen, muß <i>$parameter</i> als leeres                                                     
     150                 :      * Array gesetzt sein. <br>                                                                                                               
     151                 :      * <b>HINWEISS!! </b><br>                                                                                                                 
     152                 :      * Mögliche Rückgabewerte der Methode gehen Verloren!                                                                                   
     153                 :      * @access     public                                                                                                                     
     154                 :      * @param    string    $methodName    - der Name der Methode die ausgeführt werden soll.                                                 
     155                 :      * @param    array    $parameter    - die Parameter der Methode.                                                                          
     156                 :      * @return bool                    - ob die übergebenen Parameter richtig waren                                                          
     157                 :      */                                                                                                                                       
     158                 :     function callUserMethod($methodName, $parameter) {                                                                                        
     159               0 :         if (count($this->objects) > 0 and is_string($methodName) and is_array($parameter)) {                                                  
     160               0 :             foreach($this->objects as $obj) {                                                                                                 
     161               0 :                 if (method_exists($obj, $methodName)) {                                                                                       
     162               0 :                     call_user_func_array(array(&$obj, $methodName), $parameter);                                                              
     163               0 :                 }                                                                                                                             
     164               0 :             }                                                                                                                                 
     165               0 :             return true;                                                                                                                      
     166                 :         } else {                                                                                                                              
     167               0 :             $this->errorString = "Falsche Parameterübergabe!";                                                                               
     168                 :         }                                                                                                                                     
     169               0 :         return false;                                                                                                                         
     170                 :     }                                                                                                                                         
     171                 :     /**                                                                                                                                       
     172                 :      * Gibt den ErrorString zurück.                                                                                                          
     173                 :      * Falls kein Fehler aufgetreten ist, wird ein leerer String zurück gegeben.<br>                                                         
     174                 :      * Der letzte Fehler wird in Errorstring gespeichert, was bedeutet, das er auch                                                           
     175                 :      * <b><i>nach weiterer fehlerfreier Arbeit</i></b> nicht leer sein muß.<br>                                                              
     176                 :      * @access public                                                                                                                         
     177                 :      * @return string    - den Errorstring                                                                                                    
     178                 :      */                                                                                                                                       
     179                 :     function getErrorString() {                                                                                                               
     180               0 :         return $this->errorString;                                                                                                            
     181                 :     }                                                                                                                                         
     182                 : }                                                                                                                                             

Generated by PHPUnit 3.2.21 and Xdebug 2.0.3 at Thu Nov 26 17:01:15 CET 2009.